<template>
  <div>
    <template v-for="item in tagOptions">
      <template v-if="item.dictColor.length == 0">
        <el-tag v-if="value.toString() == item.dictValue.toString()" :disable-transitions="true" :key="item.dictLabel"
          :type="item.dictTag" :index="new Date().getTime()" :effect="effect" :size="size" :style="{
            'border-color': item.dictColor,
            background: item.dictColor
          }">
          <!-- 根据 label 属性的存在与否决定显示内容 -->
          {{ label || item.dictLabel }}
        </el-tag>
      </template>
      <template v-else>
        <el-tag v-if="value.toString() == item.dictValue.toString()" :disable-transitions="true" :key="item.dictLabel"
          :type="item.dictTag" :index="new Date().getTime()" effect="dark" :size="size" :style="{
            'border-color': item.dictColor,
            background: item.dictColor
          }">
          <!-- 同样地，这里也应用了相同的逻辑 -->
          {{ label || item.dictLabel }}
        </el-tag>
      </template>
    </template>
  </div>
</template>

<script setup lang="ts">
// 更新参数类型定义以包含 label
interface ITagProps {
  tagOptions?: any;
  value?: any;
  size?: any;
  effect?: any;
  label?: string; // 添加 label 属性
}
// 子组件接收父组件的值，设置默认值
withDefaults(defineProps<ITagProps>(), {
  tagOptions: [],
  value: "",
  size: "default",
  effect: "light",
  label: '' // 设置 label 的默认值为空字符串
});
</script>

<style lang="scss" scoped>
.el-tag {
  padding: 0 10px;
}
</style>